<?php
//
//namespace app\controllers;
//
//use app\models\ProofModel;
//use Yii;
//use app\models\ProofModelCategory;
//use app\models\search\ProofModelCategorySearch;
//use yii\web\Controller;
//use yii\web\NotFoundHttpException;
//use yii\filters\VerbFilter;
//
///**
// * ProofModelCategoryController implements the CRUD actions for ProofModelCategory model.
// */
//class ProofModelCategoryController extends Controller
//{
//    /**
//     * @inheritdoc
//     */
//    public function behaviors()
//    {
//        return [
//            'verbs' => [
//                'class' => VerbFilter::className(),
//                'actions' => [
//                    'delete' => ['POST'],
//                ],
//            ],
//        ];
//    }
//
//    /**
//     * Lists all ProofModelCategory models.
//     * @return mixed
//     */
//    public function actionIndex()
//    {
//        $searchModel = new ProofModelCategorySearch();
//        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);
//
//        return $this->render('index', [
//            'searchModel' => $searchModel,
//            'dataProvider' => $dataProvider,
//        ]);
//    }
//
//    /**
//     * Displays a single ProofModelCategory model.
//     * @param integer $id
//     * @return mixed
//     */
//    public function actionView($id)
//    {
//        return $this->render('view', [
//            'model' => $this->findModel($id),
//        ]);
//    }
//
//    /**
//     * Creates a new ProofModelCategory model.
//     * If creation is successful, the browser will be redirected to the 'view' page.
//     * @return mixed
//     */
//    public function actionCreate()
//    {
//        $model = new ProofModelCategory();
//
//        if ($model->load(Yii::$app->request->post()) && $this->fixLevel($model) && $model->save()) {
//            return $this->redirect(['view', 'id' => $model->id]);
//        } else {
//            return $this->render('create', [
//                'model' => $model,
//            ]);
//        }
//    }
//
//    /**
//     * Updates an existing ProofModelCategory model.
//     * If update is successful, the browser will be redirected to the 'view' page.
//     * @param integer $id
//     * @return mixed
//     */
//    public function actionUpdate($id)
//    {
//        if ($id == 1) {
//            return $this->redirect(['index']);
//        }
//
//        $model = $this->findModel($id);
//        if ($model->load(Yii::$app->request->post()) && $this->fixLevel($model) && $model->save()) {
//            return $this->redirect(['view', 'id' => $model->id]);
//        } else {
//            return $this->render('update', [
//                'model' => $model,
//            ]);
//        }
//    }
//
//    /**
//     * Deletes an existing ProofModelCategory model.
//     * If deletion is successful, the browser will be redirected to the 'index' page.
//     * @param integer $id
//     * @return mixed
//     */
//    public function actionDelete($id)
//    {
//        if ($id != 1) {
//
//            $categoryChildren = ProofModelCategory::find()->where(["parent_id" => $id])->all();
//            foreach ($categoryChildren as $child) {
//                $child->parent_id = 1;
//                $child->save();
//            }
//            $modelChildren = ProofModel::find()->where(["category_id" => $id])->all();
//            foreach ($modelChildren as $child) {
//                $child->category_id = 1;
//                $child->save();
//            }
//
//            $this->findModel($id)->delete();
//        }
//
//        return $this->redirect(['index']);
//    }
//
//    /**
//     * Finds the ProofModelCategory model based on its primary key value.
//     * If the model is not found, a 404 HTTP exception will be thrown.
//     * @param integer $id
//     * @return ProofModelCategory the loaded model
//     * @throws NotFoundHttpException if the model cannot be found
//     */
//    protected function findModel($id)
//    {
//        if (($model = ProofModelCategory::findOne($id)) !== null) {
//            return $model;
//        } else {
//            throw new NotFoundHttpException('The requested page does not exist.');
//        }
//    }
//
//    /**
//     * @param $model ProofModelCategory
//     * @return bool
//     */
//    private function fixLevel($model)
//    {
//        $parent = ProofModelCategory::findOne($model->parent_id);
//        $parent_level = $parent->level;
//        if ($parent_level == 3) {
//            return false;
//        }
//        $model->level = ++$parent_level;
//        return true;
//    }
//
//
//    public function actionList()
//    {
//        $category_list = ProofModelCategory::find()->all();
//        $data_arr = [];
//        for ($i = 0; $i < count($category_list); ++$i) {
//            $id = $category_list[$i]->id;
//            $parent_id = $category_list[$i]->parent_id;
//            $name = $category_list[$i]->name;
//            $level = $category_list[$i]->level;
//            $data_arr[$i]['id'] = $id;
//            $data_arr[$i]['parent_id'] = $parent_id;
//            $data_arr[$i]['name'] = $name;
//            $data_arr[$i]['level'] = $level;
////            $children_arr = [];
////            $children_arr['name'] = $name;
////            $children_arr['children'] = [];
////            $children_arr['id'] = $id;
////
////            if ($level != 3){
////                $data_arr[$id]['name'] = $name;
////            }
////            $data_arr[$parent_id]["children"][]['name'] = $name;
//        }
//        $arr = [];
//        $arr['data'] = $this->createTree($data_arr);
//        return json_encode($arr);
//    }
//
//    /*
// * 创建树形
// * @param Array $array 数组
// * @param Integer $pid 父级ID
// * @return Array $ret
// */
//    function createTree($array, $pid = 0)
//    {
//        $ret = array();
//
//        foreach ($array as $key => $value) {
//            if ($value['parent_id'] == $pid) {
//                $tmp = $value;
//                unset($array[$key]);
//                $tmp['children'] = $this->createTree($array, $value['id']);
//                $ret[] = $tmp;
//            }
//        }
//
//        return $ret;
//    }
//}
